package com.diors.commons.config.properties;

import java.io.IOException;
import java.util.Properties;

import com.diors.commons.utils.PropertiesUtils;


/**
 * 配置文件管理类（这个类是一个单例类，无法进行实例化）
 * @author 杜祥
 * @date 2012-8-29
 */
public final class ConfigManager 
{
	 Properties[] pros;
	
	 String fileName = "./config";
	 
	 private static final ConfigManager configManager = new ConfigManager();
	 
	 private ConfigManager(){
		 
	 }
	 
	 public static ConfigManager newInstance()
	 {
		 return configManager;
	 }
	
	/**
	 * 加载路径为./config下的所有配置文件，并且通过传入指定的class，给class赋值
	 * 在./config下的所有文件赋值结束后，需要调用clear()方法来施放占用的缓存
	 * @param clazz
	 * @throws IOException 
	 */
	@SuppressWarnings("rawtypes")
	public void loads(Class clazz) throws IOException
	{
		if(pros == null)
		{
			pros = PropertiesUtils.loadAllFromDirectory(fileName);
		}
		if(pros != null)
		{
			ConfigurableProcessor.process(clazz, pros);
		}
	}
	
	/**
	 * 读取指定的文件
	 * @param fileName
	 * @param clazz
	 * @throws IOException
	 */
	@SuppressWarnings("rawtypes")
	public void load(String fileName, Class clazz) throws IOException
	{
		Properties pros = PropertiesUtils.load(fileName);
		
		ConfigurableProcessor.process(clazz, pros);
	}
	
	public void clear()
	{
		pros = null;
	}
	
}
